Peer to Peer by Andy Oram (editor)
Author:Andy Oram (editor) [Oram, Andy]
Language: fra
Format: epub
Tags: Informatique
Publisher: O'Reilly
Published: 2001-11-22T21:43:16+00:00
age 128
Peer to Peer: Harnessing the Power of Disruptive Technologies
Finally, completely decentralized peer-to-peer systems have no notion of global coordination at all.
Communication is handled entirely by peers operating at a local level. This usually implies some type
of forwarding mechanism in which peers forward messages on behalf of other peers. Freenet and
Gnutella are examples in this last category.
In this chapter, when I refer to peer-to-peer systems, I will be talking only about decentralized peer-
to-peer. Since the performance issues of centralized systems have been discussed so much, it will be
interesting to look at the issues of a fully decentralized system.
14.2 Why performance matters
Several factors combine to make decentralized peer-to-peer systems more sensitive to performance
issues than other types of software. First, the essential characteristic of such systems is
communication - a characteristic that makes them fundamentally dependent on the network. In
network communication, as every dial-up user knows, connection speed dominates processor and I/O
speed as the bottleneck. Since this situation will most likely persist into the foreseeable future,
Moore's Law (so helpful elsewhere) provides little comfort. The problem is compounded by the highly
parallel nature of peer-to-peer: A connection fast enough to talk to one remote peer quickly becomes
much less so for ten trying to connect simultaneously. Thus, traffic minimization and load balancing
become important considerations.
Second, decentralized systems like Freenet and Gnutella need to use messages that are forwarded over
many hops from one peer to the next. Since there is no central server to maintain a master index, it
necessarily takes more effort to search through the system to find out where data is. Each hop not only
adds to the total bandwidth load but also increases the time needed to perform a query, since it takes a
nontrivial amount of time to set up a connection to the next peer or to discover that it is down. As
mentioned previously, the latter occurrence can be extremely common in peer-to-peer environments.
If a peer is unreachable, TCP/IP can take up to several minutes to time out the connection. Multiply
that by several times for retries to other peers and add the time needed to actually send the message
over a possibly slow dial-up connection, and the elapsed time per hop can get quite high. It is
therefore important to cut down on the number of hops that messages travel.
Third, the balance between resource providers and consumers must be considered. Like their
counterparts in the real world, peer-to-peer communities depend on the presence of a sufficient base
of communal participation and cooperation in order to function successfully.
However, there will always be those who consume resources without giving any back. Recent analysis
by Eytan Adar and Bernardo Huberman at Xerox PARC[2] indicates that as many as 70% of current
Gnutella users may be sharing no files at all.
[2] E. Adar and B.A. Huberman (2000), "Free Riding on Gnutella," First Monday 5(10),
http://firstmonday.org/issues/issue5_10/adar/index.html.
If a high enough proportion of users are free riders, performance degrades for those who do
contribute. A substantial decline in performance may impel some contributors to pull out of the
system altogether. Their withdrawal worsens the situation further for the remainder, who will
Download
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.
Algorithms of the Intelligent Web by Haralambos Marmanis;Dmitry Babenko(8309)
Test-Driven Development with Java by Alan Mellor(6794)
Data Augmentation with Python by Duc Haba(6712)
Principles of Data Fabric by Sonia Mezzetta(6455)
Learn Blender Simulations the Right Way by Stephen Pearson(6362)
Microservices with Spring Boot 3 and Spring Cloud by Magnus Larsson(6230)
Hadoop in Practice by Alex Holmes(5965)
Jquery UI in Action : Master the concepts Of Jquery UI: A Step By Step Approach by ANMOL GOYAL(5813)
RPA Solution Architect's Handbook by Sachin Sahgal(5629)
Big Data Analysis with Python by Ivan Marin(5396)
The Infinite Retina by Robert Scoble Irena Cronin(5317)
Life 3.0: Being Human in the Age of Artificial Intelligence by Tegmark Max(5158)
Pretrain Vision and Large Language Models in Python by Emily Webber(4362)
Infrastructure as Code for Beginners by Russ McKendrick(4129)
Functional Programming in JavaScript by Mantyla Dan(4044)
The Age of Surveillance Capitalism by Shoshana Zuboff(3964)
WordPress Plugin Development Cookbook by Yannick Lefebvre(3842)
Embracing Microservices Design by Ovais Mehboob Ahmed Khan Nabil Siddiqui and Timothy Oleson(3646)
Applied Machine Learning for Healthcare and Life Sciences Using AWS by Ujjwal Ratan(3617)
